#!/usr/bin/env node

//Node CLI 应用入口必须要有这样的文件头
//如果是LInux 或者 macOS 系统下还需要修改此文件的读写权限为 755、
//具体就是通过 chmod 755 cli.js 实现修改

//入口文件，，需要在package.js中的bin字段说明


//脚手架的工作过程:
//1.通过命令行交互询问用户问题
//2.根据用户回答的结果生成文件

//这是一个npm创建
const inquirer = require('inquirer')

//node
//文件系统
const fs = require('fs')
//路径
const path = require('path')
//模板引擎
const ejs  = require("ejs");

//命令行交互询问
inquirer.prompt({
    type: 'input',
    name: 'name',//存储用户输入信息
    message:'Project name?'//问题提示
}).then(answers => { 
    // console.log(answers);
    // 根据用户回答的结果生成文件

    //模板目录
    //path.join() 方法会将所有给定的 path 片段连接到一起（使用平台特定的分隔符作为定界符），然后规范化生成的路径。
    const tmplDir = path.join(__dirname,'templates')
    //目标目录
    //process.cwd() 方法会返回 Node.js 进程的当前工作目录。
    const destDir = process.cwd()

    //将模板下的文件全部转换到目标目录
    fs.readdir(tmplDir, (err, files) => { 
        if (err) throw err
        files.forEach(file => { 
            // 通过模板引擎渲染文件
            ejs.renderFile(path.join(tmplDir, file), answers, (err, result) => { 
                if (err) throw err
                //写入目标
                fs.writeFileSync(path.join(destDir, file), result)
            })
        })
    })
})